Morning Girl

Web API, Windows, C#, .NET, Dynamics 365/CRM etc..

Dynamics 365 のAPIを利用する上での全体像整理 2018/05時点

なんだかサービス? モジュールが増えすぎて、いまいち何がなんだかわかりづらい最近のDynamics 365 シリーズ

改めて全体を俯瞰したいな、連携するときに何がどのAPIで利用できるのか知りたいな、という動機から、ちょっとまとめを実施してみました。

基準となるアプリケーションの一覧

Planと言うべきかModuleと言うべきか、悩ましいところですがアプリケーションでとりあえず統一します。

US版サイトを例として、Dynamics 365 のアプリケーションを確認すると、以下のように表示されます。

現在全部で9種類

  • Sales
  • Customer Service
  • Field Service
  • Project Service Automation
  • Finance and Operations
  • Business Central
  • Talent
  • Retail
  • Marketing

f:id:sugimomoto:20180513162517p:plain

これに、最近Common data serviceとしてプラットフォームに統合されたPower Appsを加えると全部で10種類が表面的に認識できるModuleの一覧かなと思います。

f:id:sugimomoto:20180513162523p:plain

それと注意したいのが、Customer Insight や Linked-in Sales Navigator(Microsoft Relationship Sales)ですが、これはCustomer Engagement 上に構成された追加アドオンのような要素となるので、今回はアプリケーションとみなしません。

まあ、これを言い出すとSocial EngagementやAdobe Marketingなんかも話に出てきてしまうのですが。

APIから見たDynamics 365 Applicationの立ち位置

さて、その上で分類を行っていきたいと思うのですが、ここでポイントになるものはベースとなるプラットフォームです。

昔からDynamics に慣れ親しんでいる方々であればわかりやすいと思いますが、Dynamics はそれぞれのアプリケーションで統一的な切り分けができるレイヤーとして、旧バージョン名称があると思います。

それが以下の3種類です。

Dynamics CRM

Dynamics NAV

Dynamics AX

これをベース現在のDynamics 365 アプリケーション一覧をマッピングすると以下のようになります。

f:id:sugimomoto:20180513162532p:plain

(※ちなみにここでAPIと明示しているのは、Web APIとしての側面と、アプリケーションプラットフォームとしてのAPIを含めています。)

Dynamics CRM API上では、Power Appsを含む以下の6種類

  • Sales
  • Customer Service
  • Field Service
  • Project Service Automation
  • Power Apps(Common Data Service)
  • Marketing

Dynamics AX上では、意外に思われるかもしれませんが、HRのTalentと小売向けERPのRetailを含めた3種類

  • Finance and Operations
  • Talent
  • Retail

Dynamics NAVはシンプルに1種類です。

  • Business Central

そのため、各種サービスのデータ連携開発を行いたい! となったときには、それぞれのアプリケーションがどのAPIレイヤーで構成されているか把握することが大事になります。

特にFinance and Operationsはちょっと前までFinance and Operations EnterpriseとBusinessというわけのわからない名前をしていたので、Finance and Operationsで連携したい! と言われても、まずどっちなの?ということを明らかにしなければ話になりませんでした。

また、Business Centralにも簡易的なSalesアプリが搭載されているので、Dynamics CRMレイヤーのものと混同しないよう注意が必要です。

Dynamics 365 API 一覧

その上で、Dynamics 365 上のAPIを一覧にすると以下のような形になります。

ちなみに、カテゴリの名称として、CRM API, AX API, NAV APIは公式名称では無いので、ご注意を。

全体を通して言えることは、SOAPからOData V4 形式のAPIに移行しつつあるということです。認証部分もAzure AD OAuth2.0 をベースとしている点がポイントですね。

f:id:sugimomoto:20180513162747p:plain

CRM API

Microsoft Dynamics 365 Web API の使用

もともとSOAPがメインのAPIでしたが、今はOdata V4 ベースのWeb APIがメインとなっています。

最近Webhooksもサポートされました。SOAPはすでに将来的な廃止予定が出ているので、使用しないことが推奨されます。

AX API

Choose a data integration (import/export) strategy - Finance & Operations | Dynamics 365 | #MSDyn365FO | Microsoft Docs

こちらもメインのAPIはOdata エンドポイントです。

Batch Data APIというものも提供されていますが、XML形式のファイルをインポート・エクスポート処理設定を行うための、EDI的ユースケースとして使用するものかと思います。

Custome ServiceはSOAPプロトコルAPIで、Dynamics AX時代から提供されていたものです。

トライアルでAPIが使用できないのが、玉に瑕、、、。

NAV API

Endpoints for the APIs for Microsoft Dynamics NAV and Microsoft Dynamics 365 Business Central - Dynamics NAV | Microsoft Docs

Dynamics NAV ベースで提供されているOdata V4のAPIがメイン。一応Odata V3のエンドポイントも使用可能。

Production環境用とTesting環境用でエンドポイントと認証方式が変わるため、注意が必要。

Production環境はAzure ADをベースとしたOAuth 2.0ですが、Testing環境はユーザーごとに発行するTokenをベースとしたBasic認証になります。

また、現在Betaであるものの、Microsoft Graph APIとの統合エンドポイントもリリースされているため、今後他のDynamicsシリーズもこの方式に追従していくかも? 

最後に

今回はある程度プロトコル名称で統一したのですが、それぞれのAPIはOrganization Serviceだったり、Custome Serviceだったりと、独自の名称が付けられているので、要注意です。